Codeforces Round 889 Div.1 C
(工事中)
解き方
解答例
下は上に記載したコンテスト中の解き方で解いたときの提出結果である。
また、その提出の際に提出したソースコードをその下に転記する。
code: C
int main () {
int n = 0;
int m = 0;
int res = 0;
long long ans = 0LL;
long long mod_num = 1000000007LL;
long long half = (mod_num+1LL)/2LL;
res = scanf("%d", &n);
res = scanf("%d", &m);
for (int i = 0; i < n; i++) {
res = scanf("%d", s+i);
}
ans += (long long)(m-sn-1); for (int i = 0; i < n-1; i++) {
for (int j = si; j <= m; j++) { for (int k = si+1; k <= m; k++) { }
}
for (int j = si+1; j <= si+1; j++) { }
for (int j = si+1+1; j <= m; j++) { dp[si]j = (half*dp[si]j-1)%mod_num; }
for (int j = si+1; j <= m; j++) { for (int k = si+1+1; k <= m; k++) { if (k > j+1) {
}
if (k == m) {
} else if (j <= k) {
}
}
}
for (int j = si+1; j <= m; j++) { ans += ((long long)(j-si))*dpjj; }
}
printf("%lld\n", ans%mod_num);
return 0;
}
下は上に記載した計算量改善後の解き方でコンテスト終了後に解いたときの提出結果である。
また、その提出の際に提出したソースコードをその下に転記する。
code: C
int main () {
int n = 0;
int m = 0;
int res = 0;
long long ans = 0LL;
long long mod_num = 1000000007LL;
long long half = (mod_num+1LL)/2LL;
res = scanf("%d", &n);
res = scanf("%d", &m);
for (int i = 0; i < n; i++) {
res = scanf("%d", s+i);
}
for (int j = m; j > 0; j--) {
}
for (int j = m-1; j >= 0; j--) {
for (int k = m-1; k > j; k--) {
}
}
for (int i = 0; i < n; i++) {
}
printf("%lld\n", ans%mod_num);
return 0;
}
私の提出一覧
table: submissions_codeforces_round_889_div1_C
提出のURL 提出時刻 結果 備考
感想